home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 21
/
Cream of the Crop 21 (Terry Blount) (October 1996).iso
/
program
/
nwlib15.zip
/
DEMO.ZIP
/
LIST.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-06-01
|
22KB
|
630 lines
{This unit provides a generic listbox control and buttons, whose
events can be assigned to procedures stored within the body of THIS
unit, not the calling unit. Other units can assign these internal
procedures to the available buttons, events, etc. programmatically.
The event-handling procedures contained in this unit could certainly
be placed inside the calling unit for good organizational practices.
They are placed in this unit simply to increase clarity of the
NWLib demo program by reducing interface code. }
unit List;
interface
uses
sysUtils,
WinTypes,
WinProcs,
Classes,
Graphics,
Forms,
Controls,
Buttons,
StdCtrls,
ExtCtrls,
Grids,
dialogs,
Nwtools,
Nwlib,
NwProp,
NWprint;
type
TwinList = class(TForm)
Panel1: TPanel;
buttonPanel: TPanel;
listGrid: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
NWLib1: TNWLib;
NWTools1: TNWTools;
NWProp1: TNWProp;
NWPrint1: TNWPrint;
procedure FormPaint(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
inObjectName : string ;
inServer : TNWConnHandle ;
inQueue : TObjID ;
procedure onPrintJobsShow(sender : TObject) ;
procedure onPropertiesShow(sender : TObject) ;
procedure onGroupShow(sender : TObject) ;
procedure onRightsShow(sender : TObject) ;
procedure onMemberShow(sender : TObject) ;
procedure UserAddGroup(sender : TObject) ;
procedure groupAddUser(sender : TObject) ;
procedure userDelFromGroup(sender : TObject) ;
procedure groupDelUser(sender : TObject) ;
procedure objSeeObjectInfo(sender : TObject) ;
procedure showPropertyInfo(sender : TObject) ;
procedure createNewProperty(sender : TObject) ;
procedure deleteObjProperty(sender : TObject) ;
procedure addNewRight(sender : TObject) ;
procedure deleteRight(sender : TObject) ;
procedure editRight(sender : TObject) ;
procedure queueJobInfo(sender : TObject) ;
procedure queueJobDelete(sender : TObject) ;
end;
var
winList: TwinList;
implementation
{$R *.DFM}
uses
trustee ;
procedure TwinList.FormShow(Sender: TObject);
{set grid's lineheight to current font (nwtools.pas)}
begin
autoGridLineHeight(listGrid) ;
end;
procedure TwinList.FormPaint(Sender: TObject);
{enable/disable buttons}
begin
button1.enabled := (listGrid.rowCount > 1) ;
button2.enabled := button1.enabled ;
button3.enabled := button1.enabled ;
end;
{********************* formShow methods **********************}
procedure TWinList.onPrintJobsShow(sender : TObject) ;
{ used when a print queue is double-clicked to show jobs}
var
ncursor : TCursor ;
tempList : TStringList ;
nLoop : word ;
begin
ncursor := screen.cursor ;
screen.cursor := crHourglass ;
tempList := TStringList.create ;
caption := 'Print Queue Contents' ;
{ Edit listGrid's Button Properties }
{ Loads onClick events, edits captions }
button1.caption := '&Delete' ;
button2.caption := '&Info' ;
button3.caption := '&Refresh' ;
button4.caption := '&Quit' ;
button1.onClick := queueJobDelete ;
button2.onClick := queueJobInfo ;
button3.onClick := onPrintJobsShow ;
button4.modalResult := mrCancel ;
{get queue jobs and fill up the grid}
if (not getQueueJobList(inServer,
getObjName(inServer,inQueue),
tempList)) then
exit ;
listGrid.rowCount := (tempList.count+1) ;
listGrid.cells[0,0] := 'Owner Status Description' ;
listGrid.onDblClick := button3.onClick ;
for nLoop := 1 to tempList.count do begin
listGrid.cells[0,nloop] := tempList[nloop-1] ;
listGrid.cells[1,nloop] := intToStr(TNWQueueJobID(tempList.objects[nloop-1])) ;
end;
if (listGrid.rowCount > 1) then
begin
listGrid.fixedRows := 1 ;
listGrid.row := 1 ;
end;
tempList.free ;
screen.cursor := ncursor ;
end;
procedure TWinList.onGroupShow(sender : TObject) ;
{ used when objEdit's 'My Groups' button is selected }
var
ncursor : TCursor ;
tempList : TStringList ;
nLoop : word ;
begin
ncursor := screen.cursor ;
screen.cursor := crHourglass ;
tempList := TStringList.create ;
caption := inObjectName + ': Groups I''m In' ;
{ Edit listGrid's Button Properties }
{ Loads onClick events, edits captions }
button1.caption := '&Add' ;
button2.caption := '&Delete' ;
button3.caption := '&Info' ;
button4.caption := '&Quit' ;
button1.onClick := userAddGroup ;
button2.onClick := userDelFromGroup ;
button3.onClick := objSeeObjectInfo ;
button4.modalResult := mrCancel ;
{ Edit and Fill Up the listGrid }
tempList := getMyGroups(inServer,
inObjectName) ;
listGrid.rowCount := (tempList.count+1) ;
listGrid.cells[0,0] := 'Group Name' ;
listGrid.onDblClick := button3.onClick ;
for nLoop := 1 to tempList.count do
listGrid.cells[0,nloop] := tempList[nloop-1] ;
if (listGrid.rowCount > 1) then
begin
listGrid.fixedRows := 1 ;
listGrid.row := 1 ;
end;
tempList.free ;
screen.cursor := ncursor ;
end;
procedure TWinList.onMemberShow(sender : TObject) ;
{ used when objEdit's or winList's 'Members' button is selected }
var
ncursor : TCursor ;
tempList : TStringList ;
nLoop : word ;
begin
ncursor := screen.cursor ;
screen.cursor := crHourglass ;
tempList := TStringList.create ;
caption := inObjectName + ': Group Members' ;
{ Edit listGrid's Button Properties }
{ Loads onClick events, edits captions }
button1.caption := '&Add' ;
button2.caption := '&Delete' ;
button3.caption := '&Info' ;
button4.caption := '&Quit' ;
button1.onClick := groupAddUser ;
button2.onClick := groupDelUser ;
button3.onClick := objSeeObjectInfo ;
button4.modalResult := mrCancel ;
{ Edit and Fill Up the listGrid }
tempList := GetMemberList(inServer,
inObjectName,
True) ;
listGrid.rowCount := tempList.count+1 ;
listGrid.cells[0,0] := 'User ID' ;
listGrid.onDblClick := button3.onClick ;
for nLoop := 1 to tempList.count do
listGrid.cells[0,nloop] := tempList[nloop-1] ;
if (listGrid.rowCount > 1) then
begin
listGrid.fixedRows := 1 ;
listGrid.row := 1 ;
end;
screen.cursor := ncursor ;
tempList.free ;
end;
procedure TWinList.onPropertiesShow(sender : TObject) ;
{ used when objEdit's 'Properties' button is selected }
var
ncursor : TCursor ;
tempList : TStringList ;
nLoop : word ;
begin
ncursor := screen.cursor ;
screen.cursor := crHourglass ;
tempList := TStringList.create ;
caption := inObjectName + ': Valid Properties' ;
{ Edit listGrid's Button Properties }
{ Loads onClick events, edits captions }
button1.caption := '&Add' ;
button2.caption := '&Delete' ;
button3.caption := '&Info' ;
button4.caption := '&Quit' ;
button1.onClick := createNewProperty ;
button2.onClick := deleteObjProperty ;
button3.onClick := showPropertyInfo ;
button4.modalResult := mrCancel ;
{ Edit and Fill Up the listGrid }
listGrid.rowCount := tempList.count+1 ;
listGrid.cells[0,0] := 'Property Name' ;
listGrid.onDblClick := button3.onClick ;
tempList := getPropertyList(inServer,inObjectName,'*') ;
listGrid.rowCount := (tempList.count+1) ;
for nLoop := 1 to tempList.cou